/*
 Basado en:
 Tutorial # 0005 Arduino Academy - Sensor NTC
 http://www.arduteka.com/2011/12/tutorial-arduino-0005-sensor-de-temperatura-ntc/
 */

void(* resetFunc) (void) = 0;//declare reset function at address 0

void setup()
{
  
  //Tomamos el tiempo de arranque
  runningTime = 0; 
  lastSmsCheckTime  = 0;
  
  //Comenzamos la comunicación puerto serie
  Serial.begin(SERIAL_BAUDRATE);
  Serial1.begin(SERIAL_BAUDRATE); //para comunicación arduino - gprs shield
 
  setupLedPins();
  setupGprsPins();
  setupBuzzerPins();
  setupTemperatureSensor(); 

  lcd.setup();
  lcd.createChar(COVERAGE_H, coverageH);
  lcd.createChar(COVERAGE_M, coverageM);
  lcd.createChar(COVERAGE_L, coverageL);
  lcd.createChar(COVERAGE_X, coverageX);

  //Y los pines de entrada
  pinMode(thresholdLevelPin, INPUT);

  lcd.displayText ("www.elsis.es", "Activando GPRS");
  boolean bOn = gprs.turnOn();
  if (!bOn)
  {
    lcd.displayText ("Sin conexion", "Reiniciando...");
    DEBUG_PRINT(F("Reiniciando\n"));
    delay(2000);
    resetFunc(); //call arduino reset 
  }
  gprs.setSmsTxtMode();
  
  Setup mySetup;

  //PARA PRUEBAS, INICIALIZO LA MEMORIA EEPROM CON LOS NUM TELÉFONO
  //(OJO, NO HACER SIEMPRE, QUE LA TRILLAMOS)
  /* 
  EEPROM.write(PHONE_NUMBER_COUNT_ADDRESS, 0);
  
  mySetup.addNumber("657469650");
  mySetup.addNumber("653554133");
  */
  displayPhoneNumberList(mySetup);
  int strength = gprs.getSignalStrength();
  lcd.displayText ("Cobertura GSM", String(strength) + "%");
  delay(3000);
}


void setupLedPins()
{
  pinMode(pinLed1, OUTPUT);
  pinMode(pinLed2, OUTPUT);
  pinMode(pinLed3, OUTPUT);
  pinMode(pinLed4, OUTPUT);
  pinMode(pinLed5, OUTPUT);
}

void setupBuzzerPins()
{
    //ojo, que los niveles del zumbador van invertidos
  // high = silencio , low = pitido
  digitalWrite(buzzerPin,HIGH); 
  pinMode(buzzerPin, OUTPUT);
}

void setupGprsPins()
{
  pinMode(GPRS_STATUS_LED_PIN, OUTPUT);
  pinMode(GPRS_SWITCH_PIN, OUTPUT);
}
